/*********************************************************
@file

@author J. Di Mattina

@brief Type definitions for c-realize library.

Types definitions for the c-realize library.
*********************************************************/
#ifndef CRZ_TYPES_H
#define CRZ_TYPES_H

#ifdef __cplusplus
extern "C"
{
#endif

/* standard library includes */
#include <stdint.h>

/** @brief Boolean type */
typedef enum Crz_Bool
{
    CRZ_FALSE = 0,
    CRZ_TRUE
} Crz_Bool;

/** @brief Return values used by the Crz library */
typedef enum Crz_Result
{
    CRZ_SUCCESS = 0,
    CRZ_ERROR_INVALID_PARAM,
    CRZ_ERROR_MEM_ALLOC
} Crz_Result;

/** @brief Data container for vararg list */
typedef union Crz_Arg
{
    uint8_t u8;
    uint16_t u16;
    uint32_t u32;
    uint64_t u64;
    void *ptr;
} Crz_Arg;

#ifdef __cplusplus
}
#endif

#endif /* CRZ_TYPES_H */

